A conventional technique of temporarily storing incoming data from multiple ports in a shared buffer and then transferring the data to a transfer destination for the data is known. According to the technique, parity check may be performed on a read address to determine the presence/absence of a bit error when data is read out from the shared buffer. However, when multiple bit errors occur, the occurrence of a bit error cannot be detected by parity check. To deal with this problem, a technique has been disclosed, according to which a bit error of a read address or write address that cannot be detected by parity check is detected by using a monitoring buffer, etc.
For example, when the occurrence of a bit error of a read address is confirmed, no data is read out from the shared buffer after the confirmation. When the occurrence of a bit error of a read address is confirmed, the read address having an error bit is not returned to a control unit that manages the issue of a write address to the shared buffer after the confirmation (see, e.g., Japanese Laid-Open Patent Publication No. 2008-160705).
According to another disclosed technique, overlapping of an address in use and an available address in a buffer is detected and the occurrence of an error is determined when such address overlapping is detected (see, e.g., Japanese Laid-Open Patent Publication No. H9-305493). According to still another disclosed technique, the occurrence of an error is determined when a writing process is not executed during a period in which a cyclic address for designating an available address of a buffer makes a full cycle and an address not in use is detected (see, e.g., Japanese Laid-Open Patent Publication No. 2011-234114).
However, even if an error of an address that cannot be detected by parity check is detected, returning a read address having an error bit results in overwriting of unread data stored in the shared buffer. If the unread data is overwritten in this manner, the original unread data is deleted, which results in missing data or may lead to erroneous data delivery by which incorrect data is transmitted.
If incorrect data overwriting occurs in the shared buffer, original data that has been deleted cannot be restored.